// Bridge（桥接模式）
// Bridge模式将一个类的抽象部分与其实现部分分离，使它们可以独立地变化。在Go语言中，可以使用接口和结构体来实现桥接模式。
package bridge

type Implementor interface {
	DoSomething()
}

type ConcreteImplementorA struct{}

func (c *ConcreteImplementorA) DoSomething() {}

type ConcreteImplementorB struct{}

func (c *ConcreteImplementorB) DoSomething() {}

type Abstraction struct {
	Implementor Implementor
}

func (a *Abstraction) Method() {
	a.Implementor.DoSomething()
}

type RefinedAbstraction struct {
	Abstraction
}

func (r *RefinedAbstraction) Method() {
	r.Implementor.DoSomething()
}
